MDK (keil) 没有使用到的函数编译时候会有警告的解决 | 您所在的位置:网站首页 › keil 编译出现感叹号 › MDK (keil) 没有使用到的函数编译时候会有警告的解决 |
在使用MDK编写STM32代码时,有些函数如果没用到会报警告: 函数定义如下: 但是STM32有很多库函数,为什么没使用到的就不会报警告呢? 这里有一个编译细节,就是函数的有效范围问题。库函数并没有使用static关键字,因为它可能会给其他文件使用,所以编译器会进行全编译,不做整个工程的调用检查,所以也不会报错,但是这样编译出来的HEX文件会大。 而我写的函数明确指定了static,因此编译器缩小了检查范围,因为在该文件中并没有使用到该函数,所以很智能地发出警告,同时不把函数编译进HEX,所以编译出来的HEX会小,虽然有警告,但这是个比较好的编程风格。 以上是出现警告的原因,那有没有方法既缩小HEX,又不报警告呢? 如果坚持要使用比较好的static方式,一定会有警告,没有办法。 要想没有警告,就不能使用static,效仿库函数,MDK编译器提供了一种专门手段用于缩小库函数的,可以借来使用,在编译选项中把”为每个函数生成一个单文件“勾上: 在勾上它之前: 勾上它之后: 可以看出,没用的函数没有被编译进最终的HEX文件,并且不会报错。 |
CopyRight 2018-2019 实验室设备网 版权所有 |